package edu.pku.sei.act.sampletask.car;

import edu.pku.sei.act.actools.util.AbilityOutput;
import edu.pku.sei.act.actools.util.Capability;
import edu.pku.sei.act.actools.util.Role;
import edu.pku.sei.act.actools.util.TaskMessage;
import edu.pku.sei.act.sampletask.AutonomicParking;

public class _Car {
	
	public static final String ROLE_NAME = "Car";
	public static final String REWARDS = "";

	public static class state {
		public static final String PREPARE_TO_ENTER = "prepare to enter";
		public static final String DRIVING = "driving";
		public static final String QUERYING_PARKING_SLOT = "querying parking slot";
		public static final String STOPPED = "stopped";
	}

	public static class transformation {
		public static final String PARKING = "edu.pku.sei.act.sampletask.car.parking";
		public static final String WAITING_FOR_RESPONSE = "edu.pku.sei.act.sampletask.car.waitingForResponse";
		public static final String MARK_PARKING_SLOT = "edu.pku.sei.act.sampletask.car.markParkingSlot";
		public static final String STARTING = "edu.pku.sei.act.sampletask.car.starting";
	}

	public static class capability {
		public static AbilityOutput START_OUTPUT = new AbilityOutput();
		public static final Capability START = new Capability(null, "start", null, Capability.DAEMON_CAPABILITY, null, "String");
		public static final String _START = AutonomicParking.getTask().getTaskName() + "$" + ROLE_NAME + "," + START.getAbilityName();
		public static AbilityOutput STOP_OUTPUT = new AbilityOutput();
		public static final Capability STOP = new Capability(null, "stop", null, Capability.DAEMON_CAPABILITY, null, "String");
		public static final String _STOP = AutonomicParking.getTask().getTaskName() + "$" + ROLE_NAME + "," + STOP.getAbilityName();
		public static final Capability GET_LOCATION = new Capability(null, "getLocation", null, Capability.PASSIVE_CAPABILITY, null, "String");
		public static final Capability MARK_PARKING_SLOT = new Capability(null, "markParkingSlot", null, Capability.PASSIVE_CAPABILITY, "String", null);
	}

	public static class communication {
		public static final TaskMessage PARKING_NOTIFICATION = new TaskMessage(AutonomicParking.getTask().getTaskName(),null,null,"parking notification", null);
		public static final TaskMessage PARKING_SLOT_NOTIFICATION = new TaskMessage(AutonomicParking.getTask().getTaskName(),null,null,"parking slot notification", null);
	}

}
